package com.mianyang.zhangsan.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mianyang.zhangsan.model.dto.SecPaperCorrectDto;
import com.mianyang.zhangsan.model.dto.SecPaperDto;
import com.mianyang.zhangsan.model.dto.SecPracticeDto;
import com.mianyang.zhangsan.model.dto.SecUserAnswer;
import com.mianyang.zhangsan.model.entity.SecPaper;
import com.mianyang.zhangsan.model.entity.SecPaperInst;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;


/**
* @author jiangjr
*/
public interface SecPaperInstService extends IService<SecPaperInst> {

    /**
     * 查询练习
     * @param paperId 试卷编号
     * @return 练习
     */
    SecPracticeDto selectPractice(Long paperId);

    /**
     * 查询练习
     * @param paper 条件
     * @param current 当前页码
     * @param pageSize 分页大小
     * @return 练习
     */
    Page<SecPaperInst> selectPracticeByPage(SecPaperInst paper, Integer current, Integer pageSize);

    /**
     * 查询练习明细
     * @param paperInstId 试卷实例编号
     * @return 练习
     */
    SecPaperDto selectPracticeInfo(Long paperInstId);

    /**
     * 再次练习
     * @param paperInstId 试卷实例编号
     * @return 练习
     */
    SecPaperDto practice(Long paperInstId);

    /**
     * 生成练习
     * @param paperId 试卷编号
     * @return 试卷实例编号
     */
    SecPaperDto generatorPractice(Long paperId);

    /**
     * 查询最近考试
     * @param column 字段
     * @param top top
     * @return 试卷信息
     */
    List<SecPaperInst> selectPaperOrderBy(String column, int top);

    /**
     * 批改试卷
     * @param userAnswer 用户答案
     * @return 批改结果
     */
    int correct(SecUserAnswer userAnswer);

    /**
     * 删除试卷以及实例信息
     * @param paperId 试卷编号
     */
    void deleteAndPaperInst(Long paperId);
}
